package com.example.librarymanagementproject2.service;



import com.example.librarymanagementproject2.model.document.BorrowRecordDocument;
import com.example.librarymanagementproject2.model.document.UserDocument;
import com.example.librarymanagementproject2.model.entity.BorrowRecord;
import com.example.librarymanagementproject2.model.entity.User;

import java.util.List;

/**
 * @InterfaceName UserService
 * @Description TODO
 * @Author Kx
 * @Date 2025/9/28 20:37
 * @Version 1.0
 */
public interface UserService {
    /**
     * @author: kx
     * @date: 2025/10/28 9:50
     * @param pageNum : 页码
     * @param pageSize : 每页数量
     * @description: 分页查询所有用户信息
    */
    List<UserDocument> getAllUsers(Integer pageNum, Integer pageSize);

    /**
     * @author: kx
     * @date: 2025/10/28 9:45
     * @param key : 搜索关键字
     * @param pageNum : 页码
     * @param pageSize : 每页数量
     * @description: 根据关键字分页查询用户信息
     */
    List<UserDocument> getUserById(String key, Integer pageNum, Integer pageSize);

    /**
     * @author: kx
     * @date: 2025/10/14 19:21
     * @param userId : 用户ID
     * @return org.example.model.entity.BorrowRecord
     * @description: 根据用户ID查询该用户的借阅记录
    */
    List<BorrowRecordDocument> getBorrowRecordsByUserId(Long userId);

    /**
     * @author: kx
     * @date: 2025/10/14 20:13
     * @param id : 用户ID
     * @param password : 旧密码
     * @param newPassword : 新密码
     * @description: 修改密码
    */
    void updatePassword(Long id, String password, String newPassword);

    /**
     * @author: kx
     * @date: 2025/10/27 8:45
     * @param id : 用户ID
     * @param newAvatar : 新头像
     * @description: 修改头像
    */
    void updateAvatar(Long id, String newAvatar);

    /**
     * @author: kx
     * @date: 2025/10/27 10:06
     * @param id : 用户ID
     * @description: 注销账号
    */
    void cancelAccount(Long id);
}
